Licensing of computer software has traditionally been done by providing a copy of the software for each computer that was licensed to use the software. The licensed software was "locked" to the computer and could not be legally used on another computer. When computers are networked together, the practice of locking the software to a network node becomes particularly bothersome. One solution to this problem is to use a network license manager, also called a network license server. When a network license server is used, the software may be installed on any or all nodes of the network, however, only a certain number of licenses are purchased from the vendor. The license server limits the number of concurrent users of the software to the number of licenses purchased. This is done by providing some form of license "token" to the software when a user starts to use the software. That is, each time a user wants to use the software, the software sends a network message to the license server requesting a license token. If a token is available, it is returned to the software, and the software then performs its function for the user. When the user finishes using the software, the token is returned to the license server. When all the licenses are in use, the next user will not receive a token and must wait for one to become available. For example, if a network has ten nodes, the software may be installed on all the nodes. If only five licenses are purchased, five users may use the software at the same time. If a sixth user on the network attempts to use the software, no license is available, so this sixth user must wait. The software on this sixth node will not function until it receives a license token. In this manner, the software vendor gets paid for the maximum number of concurrent users, and the customer can start small and add licenses as the usage increases.
This method has proven popular and several different license servers are available from different software vendors. This causes a problem, however, since a customer may use any of the license servers available, and the application software vendor, who may be different from the license server software vendor, must provide different software to interface with each of the different license servers. To interface with the various license servers, an application software vendor must develop several different versions of the application software, one for each of the license servers. This is very costly, and causes considerable delay when the wrong version is sent to a user.
Another problem is that each of the license servers has different interface requirements. This increases development cost and increases the potential for errors. Still another problem is that a software application must be modified each time a new license server is developed or a new version of an existing server is released.
Providing a consistent user interface when a license is not available is yet another problem. When a license is not available, the user must be notified and given the choice of discontinuing the application or being placed in a queue to wait for a license. This user interface must be written for each license server used by each application, thus the user is presented with many different interfaces, all of which are used for solving the same problem.
There is need in the art for a common interface to allow application software to interface to various license servers. There is a further need in the art for such a common interface that allows application software to be easily adaptable to newly developed license servers. A still further need is for a common user interface to notify a user that a problem exists in obtaining a license. The present invention meets these and other needs.